package com.system.cacheCenterBackend.service;

/**
 * String类型缓存服务接口
 */
public interface StringCacheService {

    /**
     * 设置缓存值
     *
     * @param key   键
     * @param value 值
     * @return 是否设置成功
     */
    boolean set(String key, String value);

    /**
     * 设置缓存值，带过期时间
     *
     * @param key     键
     * @param value   值
     * @param timeout 过期时间（秒）
     * @return 是否设置成功
     */
    boolean set(String key, String value, long timeout);

    /**
     * 获取缓存值
     *
     * @param key 键
     * @return 值
     */
    String get(String key);

    /**
     * 删除缓存值
     *
     * @param key 键
     * @return 是否删除成功
     */
    boolean delete(String key);

    /**
     * 检查缓存键是否存在
     *
     * @param key 键
     * @return 是否存在
     */
    boolean exists(String key);

    /**
     * 获取key的访问次数
     *
     * @param key 键
     * @return 访问次数
     */
    int getKeyAccessCount(String key);

    /**
     * 检查key是否为热点key
     *
     * @param key 键
     * @return 是否为热点key
     */
    boolean isHotKey(String key);

    /**
     * 重置key的访问统计
     *
     * @param key 键
     */
    void resetKeyStatistics(String key);

    /**
     * 异步获取key的访问次数
     *
     * @param key 键
     * @return 访问次数
     */
    Integer getKeyAccessCountAsync(String key);
}